package com.zzjson.type;

import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

/**
 * <p>****************************************************************************</p>
 * <p><b>Copyright © 2010-2019 shuncom team All Rights Reserved<b></p>
 * <ul style="margin:15px;">
 * <li>Description : com.zzjson.type</li>
 * <li>Version     : 1.0.0</li>
 * <li>Creation    : 2019年07月09日</li>
 * <li>@author     : zzy0_0</li>
 * </ul>
 * <p>****************************************************************************</p>
 */
public class MyTypeHandler extends BaseTypeHandler<String> {

	@Override
	public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
		// 设置 String 类型的参数的时候调用，Java类型到JDBC类型
		// 注意只有在字段上添加typeHandler属性才会生效
		// insertBlog name字段
		System.out.println("---------------setNonNullParameter1：" + parameter);
		ps.setString(i, parameter);
	}

	@Override
	public String getNullableResult(ResultSet rs, String columnName) throws SQLException {
		// 根据列名获取 String 类型的参数的时候调用，JDBC类型到java类型
		// 注意只有在字段上添加typeHandler属性才会生效
		System.out.println("---------------getNullableResult1：" + columnName);
		return rs.getString(columnName);
	}

	@Override
	public String getNullableResult(ResultSet rs, int columnIndex) throws SQLException {
		// 根据下标获取 String 类型的参数的时候调用
		System.out.println("---------------getNullableResult2：" + columnIndex);
		return rs.getString(columnIndex);
	}

	@Override
	public String getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {
		System.out.println("---------------getNullableResult3：");
		return cs.getString(columnIndex);
	}
}